using System;
using System.Text;
using System.Reflection;
using System.ServiceModel;
using System.Collections.Generic;
using System.Runtime.Serialization;
using TDS = Tridion.ContentManager.Interop.TDS;
using TDSDefines = Tridion.ContentManager.Interop.TDSDefines;



#pragma warning disable 649
namespace Tridion.Gateway
{
	[DataContract]
	public class StructureGroup:Facade
	{
        internal StructureGroup(TDS.StructureGroup StructureGroup, bool ShallowCopy)
            : base(typeof(TDS._StructureGroup), StructureGroup, ShallowCopy)
		{
		}

		[DataMember(Name="ItemType")]
		private TDSDefines.ItemType itemtype;
		public TDSDefines.ItemType ItemType
		{
			 get { return itemtype; }
		}


		[DataMember(Name="ID")]
		private String id;
		public String ID
		{
			 get { return id; }
		}


		[DataMember(Name="Info")]
		private Info info;
		public Info Info
		{
			 get { return info; }
		}


		[DataMember(Name="Title")]
		private String title;
		public String Title
		{
			 get { return title; }
			 set { title = value; }
		}


		//TODO:Fix
        //[DataMember(Name="OrganizationalItem")]
        //private Object organizationalitem;
        //public Object OrganizationalItem
        //{
        //     get { return organizationalitem; }
        //}


        [DataMember(Name = "Publication")]
        private PublicationURI publication;
        public PublicationURI Publication
        {
            get { return publication; }
        }


		[DataMember(Name="IsActive")]
		private Boolean isactive;
		public Boolean IsActive
		{
			 get { return isactive; }
		}


		[DataMember(Name="Directory")]
		private String directory;
		public String Directory
		{
			 get { return directory; }
			 set { directory = value; }
		}


		[DataMember(Name="DefaultPageTemplate")]
		private PageTemplate defaultpagetemplate;
		public PageTemplate DefaultPageTemplate
		{
			 get { return defaultpagetemplate; }
			 set { defaultpagetemplate = value; }
		}


		[DataMember(Name="PageProcess")]
		private ProcessDefinition pageprocess;
		public ProcessDefinition PageProcess
		{
			 get { return pageprocess; }
			 set { pageprocess = value; }
		}


		[DataMember(Name="IsDefaultPageTemplateInherited")]
		private Boolean isdefaultpagetemplateinherited;
		public Boolean IsDefaultPageTemplateInherited
		{
			 get { return isdefaultpagetemplateinherited; }
		}


		[DataMember(Name="IsPublishable")]
		private Boolean ispublishable;
		public Boolean IsPublishable
		{
			 get { return ispublishable; }
		}


		[DataMember(Name="MetadataSchema")]
		private Schema metadataschema;
		public Schema MetadataSchema
		{
			 get { return metadataschema; }
			 set { metadataschema = value; }
		}


		//TODO:Fix
        //[DataMember(Name="MetadataFields")]
        //private ItemFields metadatafields;
        //public ItemFields MetadataFields
        //{
        //     get { return metadatafields; }
        //}


		[DataMember(Name="isEditable")]
		private Boolean iseditable;
		public Boolean isEditable
		{
			 get { return iseditable; }
		}

        protected override void Initialize(FieldInfo field, PropertyInfo property, Object value)
        {

        }

	}
}

/*
			Tridion.ContentManager.Interop.msvbvm60.Collection ListData(Tridion.ContentManager.Interop.TDSDefines.ItemType)
			System.String GetListItems(Tridion.ContentManager.Interop.TDSDefines.ListColumnFilter, Tridion.ContentManager.Interop.TDS.ListRowFilter)
			System.String GetXML(Tridion.ContentManager.Interop.TDSDefines.XMLReadFilter, Tridion.ContentManager.Interop.TDSDefines.XMLReadFilter ByRef, Tridion.ContentManager.Interop.TDS.ListRowFilter ByRef)
			Void UpdateXML(System.String)
			Void Save(Boolean)
			Void Delete()
			Void Localize()
			Void UnLocalize()
			System.String Publish(System.Object, Boolean, Boolean, Boolean, System.DateTime, System.DateTime, System.DateTime, Boolean, Boolean, Tridion.ContentManager.Interop.TDSDefines.EnumPublishPriority, Boolean, Int32)
			System.String UnPublish(System.Object, Boolean, Boolean, Boolean, System.DateTime, Boolean, Tridion.ContentManager.Interop.TDSDefines.EnumPublishPriority)
			System.String GetListPublishItems(System.Object, Boolean, Boolean, Tridion.ContentManager.Interop.TDSDefines.ListColumnFilter, Tridion.ContentManager.Interop.TDS.ListRowFilter)
			System.String GetPath()
			Void SetActive(Boolean, Boolean)
			System.String PasteItem(System.Object, Tridion.ContentManager.Interop.TDSDefines.EnumTDSCutCopyAction, Boolean)
			Tridion.ContentManager.Interop.TDS.TDSItems GetItems(Tridion.ContentManager.Interop.TDSDefines.ItemType)
*/
